SelectMany এবং Projection

Microsoft Technologies - লিংক (LinQ) LINQ এ ডেটা প্রজেকশন (Data Projection in LINQ) |
203
203

SelectMany এবং Projection দুটি অত্যন্ত শক্তিশালী কৌশল LINQ (Language Integrated Query)-এ যা ডেটা কুয়েরি এবং ম্যানিপুলেশনের জন্য ব্যবহৃত হয়। তাদের ব্যবহারের ধরন এবং উদ্দেশ্য আলাদা, তবে উভয়ই ডেটা রিট্রাইভ করার পদ্ধতিকে আরও কার্যকর এবং নমনীয় করে তোলে।


SelectMany

SelectMany হল LINQ এর একটি মেথড যা একটি ফ্ল্যাট বা একক লিস্ট বা কালেকশন তৈরি করে, যা ভেতরের কালেকশনের উপাদানগুলিকে একত্রিত করে। এটি বিশেষভাবে ব্যবহার করা হয় যখন কোনো কালেকশন বা লিস্টের মধ্যে আরেকটি কালেকশন থাকে, এবং আপনাকে সেই ভিতরের কালেকশনগুলির উপাদানগুলি একত্রিত করতে হয়।

বিশেষত্ব:

  • Nested Collections থেকে Flattened Collection তৈরি করে।
  • IEnumerable<IEnumerable> বা IQueryable<IQueryable> এর মধ্যে Nested ডেটাকে Single IEnumerable এ রূপান্তর করে।
  • এটি Projection এর সাথে ব্যবহার করা যেতে পারে, যেখানে একটি কালেকশন থেকে তার উপাদান বের করা হয় এবং সেগুলিকে একটি ফ্ল্যাট কালেকশনে পরিণত করা হয়।

SelectMany এর উদাহরণ

ধরা যাক, আমাদের কাছে কিছু ছাত্রের ডেটা এবং তাদের কোর্সের তালিকা রয়েছে। আমরা চাই সমস্ত ছাত্রদের কোর্সগুলো একত্রিত করতে।

var students = new List<Student>
{
    new Student { Name = "John", Courses = new List<string> { "Math", "Science" }},
    new Student { Name = "Jane", Courses = new List<string> { "History", "Art" }},
    new Student { Name = "Bob", Courses = new List<string> { "Physics", "Chemistry" }}
};

// SelectMany ব্যবহার করে সমস্ত কোর্স একত্রিত করা
var allCourses = students.SelectMany(student => student.Courses);

foreach (var course in allCourses)
{
    Console.WriteLine(course);
}

Output:

Math
Science
History
Art
Physics
Chemistry

এখানে SelectMany মেথডটি প্রতিটি ছাত্রের কোর্সগুলিকে একত্রিত করে একটি ফ্ল্যাট লিস্ট তৈরি করেছে। এর ফলে আমরা সমস্ত কোর্সগুলোকে একত্রে দেখতে পারলাম, যেগুলি প্রথমে প্রত্যেক ছাত্রের তালিকায় ছিল।


Projection

Projection হল একটি LINQ কৌশল যা কোনো একটি ডেটা কালেকশন থেকে নির্দিষ্ট অংশ বা ফিল্ড বের করতে ব্যবহৃত হয়। এটি সাধারণত Select মেথডের মাধ্যমে সম্পাদিত হয়, যা কেবলমাত্র নির্দিষ্ট ডেটা রিটার্ন করে (যেমন নির্দিষ্ট প্রপার্টি বা ফিল্ড)। Projection-এর মাধ্যমে আপনি একটি নতুন অবজেক্ট বা মান তৈরি করতে পারেন।

বিশেষত্ব:

  • ডেটার একটি অংশ বা কাস্টম অবজেক্ট রিটার্ন করার জন্য ব্যবহৃত হয়।
  • এটি কোনও নির্দিষ্ট প্রপার্টি, ক্ষেত্র বা ফিল্ড থেকে মান রিটার্ন করে।
  • Lambda Expression ব্যবহার করে Projection সাধারণত একটি নতুন অবজেক্ট তৈরি করতে সহায়ক।

Projection এর উদাহরণ

ধরা যাক, আমাদের কাছে কিছু ছাত্রের ডেটা রয়েছে, এবং আমরা তাদের নাম এবং তাদের প্রথম কোর্সটি বের করতে চাই।

var students = new List<Student>
{
    new Student { Name = "John", Courses = new List<string> { "Math", "Science" }},
    new Student { Name = "Jane", Courses = new List<string> { "History", "Art" }},
    new Student { Name = "Bob", Courses = new List<string> { "Physics", "Chemistry" }}
};

// Projection ব্যবহার করে ছাত্রদের নাম এবং প্রথম কোর্স বের করা
var studentCourses = students.Select(student => new 
{
    Name = student.Name,
    FirstCourse = student.Courses.FirstOrDefault()
});

foreach (var student in studentCourses)
{
    Console.WriteLine($"{student.Name} - {student.FirstCourse}");
}

Output:

John - Math
Jane - History
Bob - Physics

এখানে Projection ব্যবহার করে, Select মেথডটি প্রতিটি ছাত্রের নাম এবং প্রথম কোর্সটি বের করেছে এবং একটি নতুন অ্যানোনিমাস অবজেক্ট তৈরি করেছে যা Name এবং FirstCourse প্রপার্টি ধারণ করে।


SelectMany এবং Projection একসাথে ব্যবহার করা

কখনও কখনও SelectMany এবং Projection একসাথে ব্যবহার করা হয় যখন আপনাকে নেস্টেড কালেকশনের উপাদানগুলি একত্রিত করতে হবে এবং সেগুলিকে একটি নতুন আকারে প্রক্ষেপণ করতে হবে।

উদাহরণ:

ধরা যাক, আমাদের কাছে কিছু ছাত্র এবং তাদের কোর্স রয়েছে, এবং আমরা প্রতিটি ছাত্রের নাম এবং তাদের কোর্সের প্রথম অক্ষর বের করতে চাই।

var students = new List<Student>
{
    new Student { Name = "John", Courses = new List<string> { "Math", "Science" }},
    new Student { Name = "Jane", Courses = new List<string> { "History", "Art" }},
    new Student { Name = "Bob", Courses = new List<string> { "Physics", "Chemistry" }}
};

// SelectMany এবং Projection একসাথে ব্যবহার করা
var studentCourseInitials = students
    .SelectMany(student => student.Courses, (student, course) => new 
    {
        student.Name,
        CourseInitial = course[0]
    });

foreach (var student in studentCourseInitials)
{
    Console.WriteLine($"{student.Name} - {student.CourseInitial}");
}

Output:

John - M
John - S
Jane - H
Jane - A
Bob - P
Bob - C

এখানে SelectMany প্রথমে ছাত্রদের কোর্সগুলিকে একত্রিত করেছে এবং তারপর Projection এর মাধ্যমে CourseInitial হিসেবে কোর্সের প্রথম অক্ষর বের করেছে।


সারাংশ

  • SelectMany হল LINQ-এর একটি শক্তিশালী মেথড যা nested collections থেকে flat collections তৈরি করতে ব্যবহৃত হয়।
  • Projection হল একটি কৌশল যা Select মেথড ব্যবহার করে ডেটার একটি নির্দিষ্ট অংশ বা নতুন অবজেক্ট রিটার্ন করতে সহায়ক।
  • SelectMany এবং Projection একসাথে ব্যবহার করলে আপনি nested collections কে ফ্ল্যাট করে নতুন আকারে প্রক্ষেপণ করতে পারেন।

এটি ডেটা রিট্রাইভাল এবং ম্যানিপুলেশনকে আরও সহজ এবং কার্যকর করে তোলে, বিশেষ করে যখন অনেক স্তরের ডেটা কাজ করতে হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion